%% Program function
% 匿名函数 f = @(input1,input2,...) expression
% f为创建的函数句柄，函数句柄是一种间接访问函数的途径
clear,clc
% 创建一个名为Fxy的函数句柄
Fxy = @(x,y) x.^y + 3*x*y
% 调用whos函数看到变量Fxy的信息
whos Fxy 
Fxy(2,5)

%% 向量化和预分配
% 向量化
x = 0.01;
for k = 1:1001
    y(k) = log10(x);
    x = x + 0.01;
end
% 预分配
r = zeros(32,1);
for n = 1:32
    % M = magic(n) 返回由 1 到 n2 的整数构成并且总行数和总列数相等的 n×n 矩阵。
    % n 的阶数必须是大于或等于 3 的标量才能创建有效的幻方矩阵。
    r(n) = rank(magic(n));
end

%% 简化的humps函数的简单运用示例
a = 0:0.002:1;
b = humps(a);
plot(a,b)
function b = humps(x)
b = 1./((x-3).^2+.01) + 1./((x-.9).^2 +.04)-6;  % 在区间[0,1]求此函数的值
end
%% 函数的直接调用
% function y = mean(x,dim)
% x为输入变量，dim为数据的维数

function y = mean(x,dim)
    if nargin  == 1
        % Determine which dimension SUM will use
        dim = find(size(x)~= 1,1 );
        if isempty(dim)
            dim = 1;
        end
        y = sum(x)/size(x,dim);
    else
        y = sum(x,dim)/size(x,dim);
    end
end
    
%% 全局变量
global a
a = 2;
x =3;
y = djb(x,a);

function y = djb(x,a)
    global a
    y = a*(x^2);
end





